﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Castle.ActiveRecord;

namespace Matriculex.Dominio
{
    [ActiveRecord("curso_fechado"), Serializable]
    public class CursoFechado : Curso
    {
        // construtor vazio necessário para o ActiveRecord
        protected CursoFechado() { }

        public CursoFechado(string nome, string código, int NumeroCiclos)
            :base(nome, código, NumeroCiclos)
        {
            this.Alunos = new List<AlunoFechado>();
        }

        [JoinedKey]
        public override int Id { get { return base.Id; } }
        [HasMany]
        public IList<AlunoFechado> Alunos { get; set; }


        public override IList<Aluno> GetAlunos()
        {
            IList<Aluno> list = new List<Aluno>();
            foreach (AlunoFechado item in Alunos)
            {
                list.Add(item);
            }
            return list;
        }


        # region Métodos estáticos do ActiveRecord
        public static new void   DeleteAll()
        {
            DeleteAll(typeof(CursoFechado));
        }

        public static new  CursoFechado[] FindAll()
        {
            return (CursoFechado[])FindAllByProperty(typeof(CursoFechado),"Ativado", true);
        }

        public static CursoFechado Find(int id)
        {
            return (CursoFechado)FindByPrimaryKey(typeof(CursoFechado), id);
        }
        # endregion
    }
}
